1. The Field of the Invention
The present invention generally relates to software configuration changes, and in particular to an application configuration change log used in reverting a current configuration setting for an application to a previous configuration setting through, e.g., an undo, redo or rollback operation.
2. Background and Relevant Art
Most software applications have an accompanying configuration file, which describes configuration options particular to that application. These settings control a wide array of operation behaviors for the application. For example, they can dictate the appearance of the application (e.g., the background color used, the font style and size for the menus and toolbars, etc.), the toolbar configuration (e.g., which tool will be listed, the size of the toolbar, etc.), the printer settings (e.g., printer properties such as layout, the number of pages to print, etc.), etc. Moreover, these settings could be for the operation of the overall system, e.g., those settings found in a typical control panel such as the time of day settings, display settings, mouse settings, etc. In other words, the configuration settings describe the overall operation of the application and can be virtually any software setting that can be individually modified to a user's preference.
Configuration information for an application is typically stored in a configuration file, centralized store, e.g., system-wide registry, or both. A configuration file is created for storing configuration information specific to a particular application. A registry on the other hand, can be system-wide with a predefined format; thus, any application program can access the information in the registry. Accordingly, application programs, application setup programs, and the operating system itself can store their own configuration information in such a centralized location. An application program can retrieve, modify and replace configuration information from either the configuration file or registry during execution to control its operation. In addition, typical systems provide a user with access to the configuration information stored in either the configuration file or registry for editing purposes.
Regardless of whether the configuration information is distributed or centrally stored, certain problems in using and managing the information have been recognized. For example, when the user or application makes configuration setting changes the file or registry is typically updated with the new configuration information and the old configuration information is discarded. Accordingly, if the user or application wishes to revert back to the previous settings, they must remember what settings they changed and how they changed them. Often times, however, this is difficult or impossible. For example, a configuration change in application A may cause an undesirable effect in application B; thus, requiring the user to both recognize that the change in A caused the change in B and recall how to change it back. This may be a difficult task, especially if any significant time has elapsed between when the user made the change in A and noticed undesirable effect in B and/or the configuration change was a complex procedure.
Because of the complexity of today's configuration settings and the user's difficulty in recalling changes made, the user often times is leery about experimenting with configuration settings. For example, when a user is presented a dialog box with options for changing configuration settings that they don't understand very well, he/she doesn't feel confident making the selection. Accordingly, the user is less likely to experiment with the options, and may not be getting the optimum performance from the application. Further, the user experiences a great deal of anxiety in using the system and doesn't feel like he/she is in control.
Although current applications provide undo/redo functionality for the data that the application operates on, (e.g., the undo/redo edit for text in a standard text editor), no such functionality currently exists for software configuration settings. Further, once the application is closed this undo/redo application data no longer persists. Accordingly, there exists a need for a system that can maintain a history of software application configuration change information and provide help in undoing, redoing, or rolling back configuration settings. More generally, there exists a need for a system that can provide a reversion routine for changing the configuration of an application to a previous state.